package com.zhang.aloneway_springboot.service.impl;


import com.zhang.aloneway_springboot.dao.BookDao;
import com.zhang.aloneway_springboot.pojo.Book;
import com.zhang.aloneway_springboot.pojo.Category;
import com.zhang.aloneway_springboot.service.BookService;
import com.zhang.aloneway_springboot.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private BookDao bookDao;

    @Autowired //在用到  用category去查询书籍时 要用到categoryService这个对象的帮忙
    private CategoryService categoryService;


    @Override
    public List<Book> doList() {
        //springboot2.2.1版本以上 需要用Sort.by，不能直接用Sort了，它是private的了
        //这是在排序，按照Id，降序排序
        Sort sort = Sort.by(Sort.Direction.DESC, "id");
        return bookDao.findAll(sort);
    }

    @Override
    public void addOrUpdate(Book book) {
        //直接把book对象存入数据库
        //当主键存在时（即原来有这本书时，更新）
        //当主键不存在是（即原来没有这本书时，新增）
        bookDao.save(book);
    }

    @Override
    public void deleteBook(Integer id) {
        //注意，要选这个方法
        bookDao.deleteById(id);
    }

    @Override
    public List<Book> listByCategory(Integer cid) {
        //通过cid获取 种类对象
        Category category = categoryService.get(cid);
        //通过这个种类对象，获取到book集合
        return bookDao.findAllByCategory(category);
    }
}
